Authorization হল নিরাপত্তার একটি গুরুত্বপূর্ণ অংশ যা ব্যবহৃত হয় ব্যবহারকারীদের অ্যাপ্লিকেশন বা সিস্টেমের বিভিন্ন অংশে অ্যাক্সেস নিয়ন্ত্রণ করতে। এটি নিশ্চিত করে যে, একটি ব্যবহারকারী কোন রিসোর্সে প্রবেশ করতে পারবে এবং কোন কাজ করতে পারবে, এবং কোন রিসোর্সে তাকে প্রবেশের অনুমতি নেই। Role-based Security হল একটি পদ্ধতি যা ব্যবহারকারীদের বিভিন্ন Roles প্রদান করে এবং সেই অনুযায়ী তাদের অ্যাক্সেস নিয়ন্ত্রণ করে।
Authorization ব্যবহৃত হয় ব্যবহারকারী বা গ্রুপের জন্য একটি নির্দিষ্ট কাজ বা রিসোর্সে অ্যাক্সেসের অনুমতি প্রদান করার জন্য। এটি সাধারণত Authentication এর পরে চলে, যেখানে প্রথমে ব্যবহারকারীর পরিচয় যাচাই করা হয় এবং পরে তার অ্যাক্সেস অধিকার নির্ধারণ করা হয়।
Authorization নিশ্চিত করে যে:
Authorization সাধারনত Access Control Lists (ACLs) বা Claims-based Security এর মাধ্যমে পরিচালিত হয়।
Role-based Security বা Role-based Access Control (RBAC) একটি নিরাপত্তা মডেল যেখানে ব্যবহারকারীদের একটি নির্দিষ্ট Role বা ভূমিকা দেয়া হয় এবং সেই অনুযায়ী তাদের সিস্টেমের বা অ্যাপ্লিকেশনের অংশে অ্যাক্সেস অনুমোদিত হয়। এর মাধ্যমে সহজেই বড় সিস্টেম বা অ্যাপ্লিকেশনে ব্যবহারকারীদের অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
যে ব্যবহারকারীদের এক ধরনের দায়িত্ব বা ভূমিকা (Role) থাকে, তাদের সেই অনুযায়ী permission বা অনুমতি প্রদান করা হয়। উদাহরণস্বরূপ:
ASP.NET Core তে Authorization এবং Role-based Security বাস্তবায়ন করা খুব সহজ। এর জন্য ASP.NET Core এর Identity Framework এবং Claims-based Authorization ব্যবহার করা হয়।
ASP.NET Core Identity হল একটি পূর্ণাঙ্গ সিস্টেম যা ব্যবহারকারী পরিচালনা, লগইন, রেজিস্ট্রেশন, পাসওয়ার্ড পুনরুদ্ধার এবং Authorization পরিচালনা করে। এতে সহজেই Role-based Security বাস্তবায়ন করা যায়।
public class ApplicationUser : IdentityUser
{
// Custom properties (if any)
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
}
এখানে:
IdentityUser
হল ASP.NET Core Identity এর প্রাক-নির্ধারিত ক্লাস যা ব্যবহারকারীদের জন্য প্রয়োজনীয় সকল তথ্য সংরক্ষণ করে।ApplicationDbContext
Identity এর ডেটাবেস কনটেক্সট। এটি ব্যবহারকারীদের লগইন, রেজিস্ট্রেশন ইত্যাদি পরিচালনা করে।ASP.NET Core তে ব্যবহারকারীদের Role ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ করার জন্য [Authorize] অ্যাট্রিবিউট এবং RoleManager ব্যবহার করা হয়। RoleManager ব্যবহার করে Roles তৈরি এবং প্রয়োগ করা হয়।
public class SeedData
{
public static async Task Initialize(IServiceProvider serviceProvider, UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager)
{
var roleNames = new[] { "Admin", "Manager", "User" };
foreach (var roleName in roleNames)
{
var roleExist = await roleManager.RoleExistsAsync(roleName);
if (!roleExist)
{
await roleManager.CreateAsync(new IdentityRole(roleName));
}
}
// Create admin user
var adminUser = await userManager.FindByEmailAsync("admin@example.com");
if (adminUser == null)
{
adminUser = new ApplicationUser { UserName = "admin@example.com", Email = "admin@example.com" };
await userManager.CreateAsync(adminUser, "Admin@123");
}
// Assign role to admin
if (!await userManager.IsInRoleAsync(adminUser, "Admin"))
{
await userManager.AddToRoleAsync(adminUser, "Admin");
}
}
}
এখানে:
"Admin"
, "Manager"
, এবং "User"
নামক রোলগুলো তৈরি করা হয়েছে।একটি কন্ট্রোলারের অ্যাকশন বা পৃষ্ঠা নির্দিষ্ট রোলের জন্য সীমাবদ্ধ করতে [Authorize] অ্যাট্রিবিউট ব্যবহার করা হয়।
[Authorize(Roles = "Admin")]
public IActionResult AdminDashboard()
{
return View();
}
[Authorize(Roles = "Manager,Admin")]
public IActionResult ManagerDashboard()
{
return View();
}
[Authorize(Roles = "User")]
public IActionResult UserDashboard()
{
return View();
}
এখানে:
common.read_more